package modelo.armas;

import static modelo.SetUps.ALCANCE_RASTREO;
import static modelo.SetUps.RADIO_RASTREO;
import vista.VistaFactory;
import vista.VistaMovil;
import modelo.Movil;
import modelo.desplazadores.DesplazadorEstatico;
import modelo.util.ContadorSimple;
import modelo.util.ContadorStopException;
import modelo.util.Vector;


public abstract class Radar extends Movil {
	protected boolean estado;// si ha impactado o no alguna nave
	protected ContadorSimple alcance; //cuan lejos puede llegar su rastreo
	protected Movil objetoASeguir;
	
	protected Radar (Vector posicion, Vector direccion){
		this.estado = true;
		this.desplazador = new DesplazadorEstatico(posicion, direccion);
		this.alcance = new ContadorSimple (ALCANCE_RASTREO);
		this.radio = RADIO_RASTREO;
	}
	
	public Movil actuar() {
		try{
			alcance.descontar();
		} 
		catch (ContadorStopException e){
			throw new AlcanceAgotadoException();
		} 
		radio = radio + RADIO_RASTREO;
		return null;
	}
	
	public int getAlcance(){
		return alcance.getValor();
	}
	
	public boolean seguirActuando (){
		return ( !(alcance.agotado()) & (estado));
	}
	
	public Movil getObjetoASeguir (){
		return objetoASeguir;
	}
	
	public void chocarConPickUp(PickUp unPickUp) {
		//nada
	}
	
	public void chocarConBalaAlgo42 (BalasAlgo42 unaBala){
		//nada
	}
	
	public void chocarConBalaEnemiga (BalasEnemigas unaBala){
		//nada
	}
	
	public boolean dejaNuevoObjetoAlMorir(){
		return true;
	}
	
	public VistaMovil getVista (VistaFactory vistaFactory){
		return vistaFactory.getVistaRadar (this);
	}
}
